Cross-region data access in partitioned framework

ABSTRACT

A method and system is provided for maintaining customer data in a data store system utilizing a scalable partitioning framework. More specifically, the data store of a customer service system is partitioned (divided) into multiple partitions by a partitionable key of customer data so that each partition owns a subset of the customer data. By maintaining several partitions that store a subset of the customer data exclusive to each other, blackout or brownout problems can be local to one partition and, thus, the availability for the entire system will be increased. Moreover, a set of partitionable keys, a minimal unit to be moved between partitions, is grouped and associated with a partition. By eliminating direct dependencies between the partitions and the partitionable keys, the system can have great flexibility with regard to migrating customer data between partitions and adding a new partition.

BACKGROUND

With the increased popularity of the Internet, Internet-based customerservices have become increasingly accepted and popular. Network purchaseservices that enable users to purchase items or services may be one ofthe most used and favored Internet-based customer services. Networkpurchase services also provide numerous other services to customers,such as account service, advertisement campaign service, shippingservice, customer care service, information search service, and more.Thus, typical network purchasing services tend to maintain informationfor each customer or each provided service, which results in explosivegrowth of customer information maintained in the network purchaseservices databases.

In a typical embodiment, the underlying customer database of suchnetwork purchasing services may be a single database where managing datais rather simple and straightforward. However, this type of database canbe the single biggest point of failure with respect to data“availability” in the network purchasing services. Generally, there aretwo primary risks in such database systems: a hard failure in which thedatabase goes down completely (blackout), and a heavy CPU load due tovolume that causes the database to be unresponsive or timeout(brownout). One approach to solve the blackout or brownout problems isto maintain a secondary database (backup database), which is a mirror ofa primary database, and if there is a problem in the primary database,the system fails over to the secondary database. However, utilizing abackup database may cause its own problem because if the heavy CPU loadthat took down the primary database is transferred to the secondarydatabase, the secondary database will likely be taken down as well.

Further, such database systems lack database scalability when demand foradditional database capacity arises. As the Internet expands, its reachbecomes more pervasive as more and more users are using network purchaseservices. Thus, the volume of the customer information maintained by thenetwork purchase services outgrows the existing database hardware.However, adding new database hardware is an expensive and difficult taskthat generally requires redistribution or migration of data fromexisting database hardware to new database hardware and oftentimesdeployment of a new software system. Moreover, adding new databasehardware may disturb various customer services that require immediateaccess to the customer information stored in the existing databasehardware.

SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This summary is not intended to identify key features ofthe claimed subject matter, nor is it intended to be used as an aid indetermining the scope of the claimed subject matter.

Generally described, a method and system for maintaining customer datain a data store system utilizing a partitioning framework is provided.More specifically, the data store of a customer service system ispartitioned (divided) into multiple partitions by a partitionable key ofcustomer data so that each partition owns a subset of the customer data.By maintaining several partitions which store a subset of the customerdata exclusive of each other, blackout or brownout problems can be localto one data partition and thus the availability for the entire systemwill be increased. A set of partitionable keys (bucket) may be groupedand associated with a particular data partition in order to eliminatedirect dependencies between the data partitions and the partitionablekey. When there is a need for redistribution of customer data over datapartitions, buckets, but not individual customer identifiers, will beredistributed. In this manner, the system can have a great flexibilitywith regard to migrating customer data between data partitions andadding a new data partition.

In accordance with an aspect of the present invention, a computer systemfor managing customer information in scalable, partitioned data storesis provided. The computer system comprises one or more data storescontaining a plurality of mapping tables and multiple data partitions,each of which stores customer information of a separate portion ofcustomers and wherein each data partition is associated with one or morebuckets and each bucket contains partitionable keys of severalcustomers. In one aspect, the computer system further comprises acomputing device in communication with the one or more data stores. Thecomputing device identifies a bucket which is ready to be reassigned toa new data partition, and identify an old data partition that iscurrently associated with the identified bucket. A first table isupdated to indicate that the identified bucket is in a process ofmigration from the old data partition to the new data partition. Thecomputing device moves customer information associated with customeridentifiers from the old data partition to the new data partition, thecustomer identifiers being provided from the identified bucket. Aftermoving the customer information, the computing device updates the firsttable to indicate that the identified bucket is now associated with thenew data partition and the migration progress is finished.

In accordance with another aspect of the present invention, acomputer-implemented method for accessing information about a customerstored in a data store is provided. The data store includes a pluralityof data partitions, each of which contains an exclusive set ofinformation about customers. The computer-implemented method includesreceiving a request to access information about a customer, identifyingfrom the request a partitionable key related to the customer, andperforming a bucket mapping with the partitionable key to determine apartition. Each partition is associated with at least one bucket thatcontains partitionable keys of a group of customers. An access requestof the information about the customer is sent to a partitioncorresponding to the partition identification. The access request isformulated suitable for the data partition to understand. Subsequently,a result of the access request is obtained from the data partitioncorresponding to the partition identification.

DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of thisinvention will become more readily appreciated as the same become betterunderstood by reference to the following detailed description, whentaken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a pictorial diagram of an exemplary data store systemutilizing a partitioning framework, in accordance with embodiments ofthe present invention;

FIG. 2 is a block diagram of an exemplary partition and associatedbuckets, in accordance with embodiments of the present invention;

FIGS. 3-4 are pictorial diagrams showing interactions among variouscomponents in a data store service system with partitions when a requestto access customer data is received, in accordance with embodiments ofthe present invention;

FIG. 5 is a flow diagram of a customer data access routine for accessingcustomer data from a partition in response to a request, in accordancewith embodiments of the present invention;

FIG. 6 is a flow diagram of a bucket mapping routine for determining apartition corresponding to a bucket, in accordance with embodiments ofthe present invention;

FIG. 7 is a flow diagram of a bucket migration routine for customer datamigration from one partition to another, in accordance with embodimentsof the present invention;

FIG. 8 is a pictorial diagram depicting an exemplary environment toimplement several data store systems that are dedicated to a certaingeographic region, in accordance with embodiments of the presentinvention;

FIG. 9 is a flow diagram illustrating a cross-shopping routineimplemented in the exemplary environment of FIG. 8, in accordance withembodiments of the present invention;

FIG. 10 is a flow diagram illustrating a shotgun request routineimplemented in the exemplary environment of FIG. 8, in accordance withembodiments of the present invention;

FIG. 11 is a flow diagram illustrating a get-by-partition requestroutine implemented in the exemplary environment of FIG. 8, inaccordance with embodiments of the present invention; and

FIGS. 12A-12B are pictorial diagrams depicting an exemplary systemenvironment where a legacy database is converted into a partitioned datastore system, in accordance with embodiments of the present invention.

DETAILED DESCRIPTION

Generally described, embodiments of the present invention relate to amethod and system for maintaining customer data in a data store systemutilizing a scalable partitioning framework. More specifically,embodiments of the present invention relate to a method and system formanaging a data store of a customer service system that is partitioned(divided) into multiple partitions by a “partitionable key” of customerdata so that each partition owns a subset of the customer data and suchthat the partitions are scalable, as described below. A “partitionablekey,” as used herein, is an identifier of customer data within a datastore, which can be used to determine a partition corresponding to thecustomer data. An example of a partitionable key may be a customeridentifier that is a unique identifier of customer data within a datastore.

Each partition is associated with one or more “buckets” in order toeliminate direct dependencies between the partitions and thepartitionable keys. A “bucket,” as used herein, refers to a set ofpartitionable keys that are grouped by a hashing algorithm. In oneembodiment, customer data are migrated at a bucket level, but not at apartitionable key level. Thus, when there is a need for redistributionof customer data over data partitions, buckets, not individualpartitionable keys, can be redistributed.

The following detailed description describes illustrative embodiments ofthe invention. Although specific system configurations, screen displays,and flow diagrams are illustrated, it should be understood that theexamples provided are not exhaustive and do not limit the presentinvention to the precise forms and embodiments disclosed. Personsskilled in the field of managing database systems will recognizecomponents and process steps described herein that may beinterchangeable with other components or steps, or combinations ofcomponents or steps, and still achieve the benefits and advantages ofthe invention.

It should also be understood that the following description is presentedlargely in terms of logic operations that may be performed byconventional computer components. These computer components, which maybe grouped at a single location or distributed over a wide area on aplurality of devices, generally include computer processors, memorystorage devices, display devices, input devices, etc. In circumstanceswhere the computer components are distributed, the computer componentsare accessible to each other via communication links.

In the following description, numerous specific details are set forth inorder to provide a thorough understanding of the invention. However, itwill be apparent to one skilled in the art that the invention may bepracticed without some or all of these specific details. In otherinstances, well-known process steps have not been described in detail inorder not to unnecessarily obscure the invention.

Referring to FIG. 1, a block diagram of an exemplary data store system100 utilizing a partitioning framework is illustrated in accordance withembodiments of the present invention. The illustrative data store system100 may be utilized by client services 108, such as network purchasingservices that facilitate purchase transactions over the Internet, or anyInternet-related services that need to access/manage customer data fortheir services.

The exemplary system 100 may include one or more data stores, includinga customer data store 120, a global data store 110, and the like. Thecustomer data store 120 is partitioned (divided) into multiple datapartitions, for example, data partitions 122, 124, by partitionablekeys. Any mutable key of customer data may be selected as apartitionable key as long as such key of particular customer data can beused to determine a partition corresponding to the particular customerdata. An example of a partitionable key may be a customer identifierthat is a unique identifier of customer data within the data stores. Aswill be appreciated by one of ordinary skill in the art, a partitioneddata store generally refers to a data store that owns all of the datacorresponding to a subset of customers. In one embodiment, each datapartition 122, 124 stores customer data of an exclusive subset ofcustomers and, thus, a particular customer corresponds to only one datapartition. In this manner, a customer and associated customer data(customer data) are always “homed” on a particular data partition butnot on other data partitions. As will be discussed in greater detailbelow, each data partition 122, 124 may be one or more physical customerdatabases and replicated for failover purposes.

The global data store 110 is not partitioned but owns some customer datafor each customer in conjunction with the underlying business logicfunctionality for customer services. For example, a customer login nameor nickname that can be used for a purchasing transaction may be storedin the global data store 110, separate from the customer data store 120.The global data store 110 may store several mapping tables for managingpartitioning logic.

In the exemplary system 100, several service layers may be included forflexible accessing and managing the customer data store and the globaldata store. In one embodiment, the exemplary system 100 may include afirst service layer, for example, a customer service server 102, whichis responsible for routing and aggregating customer data with respect toa request to access customer data or other information related tocustomers. The customer service server 102 may receive messages from theclient services and determine the appropriate service from which toaccess customer data. The customer service server 102 further determineswhich requests are serviced by the global data store 110 and which areserviced by the customer data store 120. In the case of multiple sourcesrequired to fulfill a request, the customer service server 102 mayaggregate across those sources.

The second service layer may be a partitioning service 104 that isresponsible for providing a unified interface to the customer data storeand obfuscating the underlying partitioning architecture to thecustomer. The third layer may be data partitions 122, 124. In oneembodiment, each data partition includes a data partition service whichis responsible for managing its corresponding data partitions 122, 124.The partitioning service 104 may provide a thin service layer forinteracting with the customer data store 120. It is also responsible formanaging partitioning logic across all partitions 122, 124. Bymaintaining several service layers, new partitions can be added withoutrequiring any software change in client services 108. When a newpartition is added to the customer data store, the partitioning service104 only has to be configured to talk to the new data partition or datapartition service of the new partition. Additionally, an underlying datastore technology used for the data partitions can be changedtransparently without affecting the client services since the way thatthe customer service server 102 communicates with the client servicescan remain the same regardless of the change in the underlying datastore technology.

The partitioning service 104 may also communicate with a global dataservice 106 that is responsible for accessing the global data store 110,which owns customer data in conjunction with the underlying businesslogic functionality. Alternatively, the partitioning service 104 andglobal data service 106 can be merged into one service layer foraccessing any data stores in the system 100.

For the purpose of discussion, examples and embodiments described hereinmay be discussed in conjunction with a customer data store having acustomer identifier as a partitionable key. However, it is to beunderstood that any mutable key of customer data can be selected as apartitionable key as long as the key can be used to determine apartition corresponding to the customer data.

Referring to FIG. 2, a block diagram 200 illustrates a data partition222 associated with one or more buckets 240 in accordance withembodiments of the present invention. Within the customer data store,each data partition is associated with one or more buckets. Thosebuckets are used to eliminate direct dependencies between the datapartitions and partitionable keys (e.g., customer identifiers). In oneembodiment, the relationship between a bucket and a data partition maybe stored in a bucket-to-partition mapping table that is stored in theglobal data store 110. Each bucket contains a subset of customeridentifiers of customers “homed” on the corresponding data partition.For example, if a data partition is associated with bucket-1 andbucket-3, the customer identifiers of customers who are “homed” on thedata partition may be divided in bucket-1 and bucket-3. When there is arequest to access customer data of a customer, a bucket containing thecustomer identifier of the customer may be identified to route therequest to a proper data partition. In this manner, all data requestsand updates for a particular customer go to the same data partitionthrough a bucket-to-partition mapping. Likewise, because the specificdata partition can be identified, there is no need to search all datapartitions.

In one embodiment, a hash function that hashes a customer identifier toa unique bucket identifier (e.g., a unique number) pointing to acorresponding bucket may be utilized. As will be discussed in greaterdetail below, a hash function may be determined in such a way that,through the hash function, customer identifiers (or particularpartitionable keys) can be distributed evenly across data partitions,which will lead to evenly-distributed database loads across the datapartitions. The data partition 222 may include its corresponding datapartition service which is in charge of managing and accessing customerdata in the data partition 222. For example, upon receipt of a requestto access customer data of a customer, the partitioning service 104identifies which data partition a given request should go to, via abucket-to-partition mapping using the customer ID of the customer. Then,the partitioning service 104 forwards the request to the identified datapartition 222. Subsequently, the requested customer data is accessed andthe result is provided to the partitioning service 104.

As mentioned above, utilizing buckets (a bucket-to-partition mappingscheme) may remove any direct dependency between customer IDs and datapartitions. It is well known in the art that such dependency would notonly introduce a dependency within the customer data store, but alsolimit a scalability of the customer data store. In one embodiment, afixed number of buckets may be chosen with a consideration of potentialscalability within the customer data store 120 in order to achieve amanageable data set for a long period. However, it should be understoodthat the customer data store can be partitioned and maintained withoututilizing buckets. For example, the data partitions and customer IDshave direct mapping relationships, thereby eliminating the need forbuckets.

Referring to FIG. 3, a pictorial diagram 300 shows interactions amongvarious components in the exemplary data store system 100 where arequest to access customer data is received from client services inaccordance with embodiments of the present invention. For the purpose ofdiscussion, assume that a request to access customer information about acustomer is forwarded to the partitioning service 104 from the customerservice server 102. Assume further that the request includes thecustomer ID of the customer.

Upon receipt of the request, the partitioning service 104 may processthe request and identify the customer ID of the customer. For example,if a request to access the billing address of John Smith with customerID “234568” is received, the partitioning service 104 will identify“234568” for the request. Subsequently, the partitioning service 104 mayuse a hash function to transform the customer ID to a bucket identifier(bucket-ID) of a bucket that corresponds to the customer. It is to beunderstood that the hash function may be defined, as appropriate, todetermine, based on a customer ID, a bucket associated with a datapartition which currently stores the customer data. As will beappreciated by one of ordinary skill in the art, any suitable hashalgorithm can be used for that purpose. In one embodiment, the hashfunction is determined in such a way that an even distribution ofcustomer IDs across the buckets can be assured. In this manner, once thebuckets are evenly distributed across data partitions, the database loadis also evenly distributed across data partitions, which will lead toless of a chance of brownout or blackout in the data store system. Thisapproach may also work when there is a very small percentage ofcustomers who are “power customers” creating a large volume of dataaccess transactions since the power customers can be evenly distributedacross data partitions.

As an example, a meaningful portion of a customer ID may be selected,for example, the first six digits of the customer ID, and transformedinto a bucket-ID through a hash function which can be defined as:((K0+(10*K1))+((K2+(K3*10))*B)+((K4+(K5*10))*B^2))%N=bucketwhere B=base, N=number of buckets, K[0-5]=digits of the customer ID.

For an efficient process, the partitioning service 104 may periodicallypre-fetch from the global data service 110 a bucket-to-partition mappingtable into an in-memory cache. The partitioning service 104 may use thebucket-to-partition mapping table to identify the data partitionassociated with the bucket-ID. The partitioning service 104 forwards therequest to the identified data partition. Subsequently, the identifieddata partition 332 processes the request and accesses the customerinformation of the customer in accordance with the request. For example,if the request is a query of the billing information of John Smith, thedata partition 332 may query the billing information of John Smith(e.g., accessing a data record having the customer ID=“234568”) andreturn the billing information to the partitioning service. For anotherexample, if the request is to update the credit card information of JohnSmith, the data partition 332 may update the credit card information ofJohn Smith (a record having the customer ID=“234568”) and return theresult to the partitioning service 104.

Referring to FIG. 4, a pictorial diagram 400 shows interactions amongvarious components in a data store service system with data partitionswhen another request to access customer data is received in accordancewith the present invention. In one embodiment, the customer serviceserver 102 also supports some requests that do not involve customer IDsbut “secondary keys” of customer data. A “secondary key,” as usedherein, refers to any non-partitionable key of customer data, which isdifferent from a partitionable key (e.g., customer ID) used to determinea corresponding partition in the data store. For example, a secondarykey may be a customer's nick name, an email address, a telephone number,etc. In an illustrative embodiment, the global data store may storeseveral secondary key mapping tables through which secondary keys aremapped to a customer ID rather than directly to the data partition wherethe customer is “homed.” In this manner, minimal updates in the globaldata store will be required, for example, only the bucket-to-partitionmapping table needs to be updated in the event that a bucket is moved(migrated) to a new data partition. Each secondary key may have aseparate mapping table, to allow for differences in types of secondarykeys as well as to make the global data store maintenance easier.

As with FIG. 3, consider that a request to access customer informationabout a customer is forwarded to the partitioning service from thecustomer service server and the request does not include the customer IDof the customer but, instead, includes a secondary key of the customer.For the purpose of discussion, assume that the secondary key has asecondary key mapping table contained in the global data store.

Upon receipt of the request, the partitioning service 104 may identifythe secondary key (e.g., nickname, etc.) of the customer and thepartitioning service 104 may communicate with a global data service 106that is responsible for maintaining secondary key mapping tables. Thepartitioning service 104 obtains the customer ID from the global dataservice 106 that performs a lookup on a secondary key mapping tablewhich is specific to the identified secondary key and applies a hashfunction to get a bucket-ID of a bucket that corresponds to thecustomer. The partitioning service 104 may use the bucket-to-partitionmapping table to determine the partition identifier associated with thebucket that corresponds to the customer. For an efficient process, thebucket-to-partition mapping table may be periodically pre-fetched fromthe global data store in a memory cache by the partitioning service 104.The partitioning service 104 further identifies a data partitionassociated with the determined partition identifier and forwards therequest to the identified data partition. The data partition processesthe request and, based on the request, accesses the customer informationof the customer.

As will be discussed in greater detail below, the secondary key mappingtables contained in the global data store may cover a few selectedsecondary keys and, thus, some secondary keys may not have a mappingrelationship with a partitionable key (e.g., customer ID). In such acase, the partitioning service 104 may broadcast a request to severaldata partitions and aggregate results from data partitions.

Referring to FIG. 5, a flow diagram depicts a routine for accessingcustomer data stored in a data partition in accordance with anembodiment of the present invention. As with FIG. 1, assume that thecustomer service server 102 receives requests from the client services108 and determines the appropriate service from which to access customerdata. Assume further that the request includes the customer ID of thecustomer data or the secondary key that can be mapped to the customer IDof the customer data. After determining which requests are serviced bythe global data store 110 and which are serviced by the customer datastore, the customer service server 102 sends requests with theinformation relevant to process the request to the partitioning service104 and waits for the results.

Beginning at block 502, the partitioning service 104 receives a requestto access customer data of a customer from the customer service server102. At block 504, the partitioning service 104 may identify a customerID of the customer from the request. As mentioned above, if the servicerequested by the client services is about a secondary key of thecustomer, the partitioning service 104 may identify the secondary keyfirst and the customer ID of the customer may be obtained from asecondary to partitionable key mapping. In one embodiment, thepartitioning service 104 may communicate with the global data server 106for the secondary to partitionable key mapping. The global data service106 is responsible for managing the global data store that contains abucket-to-partition mapping table and several secondary key mappingtables. The partitioning service 104 may obtain the customer ID of thecustomer from the global data service 106. At block 506, a partition IDof a partition where the customer data is “homed” may be determined viaa bucket mapping subroutine 600 (FIG. 6). As will be discussed ingreater detail below, the bucket mapping subroutine 600 may hash theidentified customer ID to a bucket and look up the bucket-to-partitionmapping table to get a partition associated with the bucket. To thatend, the bucket mapping subroutine 600 will return the partition ID oran invalid request if the request cannot be severed for some reason. Atdecision block 508, a determination is made as to whether the request isinvalid and thus no partition ID has been returned from the bucketmapping subroutine 600. If a partition ID of the data partition wherethe customer ID and the customer are “homed” has been returned from thebucket mapping subroutine 600, at block 510, the partitioning service104 may identify a data partition associated with the partition ID.Subsequently, the partitioning service 104 may communicate with the datapartition and the request is forwarded to the data partition asillustrated at block 512. At block 514, the partitioning service 104obtains a result for the request from the data partition. The datapartition processes the request and accesses the customer information ofthe customer in accordance with the request. For example, the requestcan be a query, delete, or edit of the customer information of thecustomer. The data partition may perform necessary actions based on therequest and provide the result to the partitioning service 104. Afterobtaining the result (block 514) or after determining that the requestis invalid (decision block 508), the routine 500 completes at block 512.The partitioning service 104 will provide the result to the customerservice server 102 that is responsible for communicating with the clientservices.

In one embodiment, each data partition may include a data partitionservice responsible for managing the data partition. In this embodiment,the partitioning service 104 may communicate with the data partitionservice of the identified data partition to access customer data.

Referring to FIG. 6, a flow diagram depicts a subroutine forbucket-to-partition mapping in accordance with an embodiment of thepresent invention. As with FIG. 5, assume that the partitioning service104 has identified or obtained the customer ID of the customer whosedata has been queried.

Beginning at block 602, a hash function may be applied to the customerID and produce a bucket-ID which is a unique identifier (e.g., a number)pointing to a bucket where the customer ID belongs. As mentioned above,a bucket contains a set of customer IDs. At block 604, informationrelevant to the bucket may be determined through a lookup on thebucket-to-partition mapping table that represents a bucket-to-partitionrelationship in the data store and the current state of buckets.

In an illustrative embodiment, the bucket-to-partition mapping table mayhave several values for each entry for a bucket-ID including a“partition-ID” field which is an old data partition with which thebucket is currently associated; a “new partition ID” field which is anew data partition to which the bucket is newly assigned for amigration; a “flag” field which indicates the state of the bucket, etc.As such, the bucket-to-partition mapping table may provide informationrelating to a bucket and an associated data partition so that if abucket-ID is determined based on a customer ID, a data partition wherethe customer ID is “homed” can be determined.

For example, if a first data partition (partition-ID=1) has two buckets,bucket-ID=1 and bucket-ID=4, respectively, and a second data partition(partition-ID=2) has two buckets, bucket-ID=2 and bucket-ID=3,respectively, the bucket-to-partition mapping table will represent thoserelationships so that with a particular bucket-ID, a corresponding datapartition can be determined. Further, the mapping table also providesmigration information, for example, by a flag indicating whether thebucket is in the process of migration.

An exemplary bucket-to-partition mapping is set forth below in thefollowing table.

Bucket-ID Partition-ID New Partition ID Flag 1 1 3 1 2 2 4 0 3 2 5 0 4 11 0

In one embodiment, when a new data partition is added to the data storesystem, existing buckets may be reassigned (or redistributed) to thedata partitions in order to distribute load balance among the datapartitions. As a bucket is reassigned to a new data partition (adestination data partition to which the bucket is to be migrating), dataof customers whose IDs are contained in the bucket may be moved from anold data partition (a source data partition from which the bucket is tobe migrating) to the new data partition. When new customers' datacorresponding to the bucket are created, the created new customer datamay be inserted into the new data partition just before or during theprocess of migration. In this way, the partition service 104 can beginputting a load on the new data partition (e.g., new data partition)immediately, and maintaining the set of customers in the bucket storedon the old data partition as constant, which makes the number ofcustomers whose data is to be migrated constant. Further, thepartitioning service 104 can easily verify when the migration iscompleted without checking the old data partition for newly-addedcustomers' data.

At decision block 605, a determination is made as to whether thecustomer data corresponding to the customer ID is associated with thenew data partition. For example, if the customer data corresponding tothe customer ID has been created in the new data partition or is to becreated in the new data partition, the customer data is associated withthe new data partition before the migration process is finished. If itis determined at decision block 605 that the customer data correspondingto the customer ID is associated with the new data partition, at block609 the new data partition ID corresponding to the bucket may bereturned.

If it is determined at decision block 605 that the customer datacorresponding to the customer ID is associated with the old datapartition, at decision block 606 a determination is made as to whetherthe bucket is in a process of migration. In order to maintain thecustomer data's integrity, the bucket may be locked (e.g., deny updates)for a period of time while the customer data are migrated to the newdata partition. Thus, during the process of migration, the customer datawithin the old data partition cannot be accessed for update. At decisionblock 608, a determination is made as to whether the request is toupdate the customer data. If it is determined at decision block 608 thatthe request is to update the customer data, at block 612 the subroutinereturns an invalid request indicating that the request cannot be served.If it is determined at decision block 606 that the bucket is not in aprocess of migration or if it is determined at decision block 608 thatthe request is not to update the customer, the old data partition IDassociated with the bucket ID will be returned. The subroutine 600completes at block 614.

Referring to FIG. 7, a flow diagram depicts a bucket migration routinefor customer data migration from one data partition to another inaccordance with embodiments of the present invention. Beginning withblock 702, the partitioning service 104 may identify which bucket tomigrate to which data partition. For example, if a new data partition isadded, a bucket ID that is ready to be associated with the new datapartition may be identified. Once this information has been determined,the bucket-to-partition mapping table may be updated to reflect the newdata partition and old data partition of the identified bucket.

At block 704, a list of customer IDs that are contained in theidentified bucket may also be determined. At block 706, thebucket-to-partition mapping table may be updated to indicate the bucketis locked due to a process of migration. The flag field in the bucketmapping table is marked to indicate that the bucket is locked. At block708, if there are other partitioning services that access the customerdata store, the information of the locked bucket may be propagated tothose services. While a bucket is being locked, the customer data withinthe old partition may not be accessed for update. For example, thecustomer data can be accessed for a read request but not for an updaterequest in order to maintain data integrity across data partitions.After receiving an acknowledgement from the other services asillustrated at block 710, the partitioning service 104 may start movingcustomer data based on the list of customer IDs from the old datapartition to the new data partition, as illustrated at block 712. Atblock 716, the bucket-to-partition mapping table reflects that thebucket now corresponds to the new data partition, not the old datapartition, and the bucket is unlocked so that the migrated customer datacan be accessed via the new data partition. In addition, the flag in thebucket mapping table is cleared to indicate that the migration hascompleted. In addition, the flag in the bucket mapping table is clearedto indicate that the migration has completed, and the old data partitionin the bucket mapping table is overwritten with the new data partition.At block 718, if there are other partitioning services that access thecustomer data store, the information of the unlocked bucket may bepropagated to those services. At block 720, acknowledgements arereceived from the other partitioning services. The routine 700 completesat block 722.

In some instances, one or more data store systems that are dedicated tocertain geographic regions (e.g., countries, continents, etc.) may beutilized by the client services. Further, it is beneficial to maintainseparate data partitions for each region's customers simply becausepreferred languages, customs, regulations, shipping methods, time zones,etc., are different. As described above, each data partition will haveits own replication to a warm failover secondary database; however,replication may not exist between regions. Thus, a separate bucket maptable (buckets-to-partition) for each region may be maintained.

In this embodiment, a partitioning service for one region can receive arequest to access customer data “homed” in another region. The requestmay be forwarded to the partitioning service associated with the regionwhere the customer and customer data are “homed.” One example of suchrequests may be a request related to “cross-shopping” within the clientservices 108. “Cross-shopping,” as used herein, refers to an activity ofa customer whose account was created in one region generating a requestthat is to be served out of another region.

For example, assume that there are two data store systems, one thatcovers the North American region and a second that covers the UnitedKingdom region, and a particular customer's account is “homed” in thedata store systems for the North American region. If the customeraccesses a Web site provided by the United Kingdom region, which leadsthe partitioning service of United Kingdom regions to communicate withthe partitioning service of the North American region, the customerengages in “cross-shopping” activities. One simple example of“cross-shopping” is that a customer of a network purchase service forthe North American region tries to purchase an item offered by a networkpurchase service for the United Kingdom region. The network purchaseservice for the United Kingdom region may send a service request toaccess a customer account to a customer service server for the UnitedKingdom region. The request is forwarded to the partitioning service forthe United Kingdom region. The partitioning service for the UnitedKingdom region finds that the request will be served by the NorthAmerican region and forwards the service request. Subsequently, thepartitioning service for the North American region returns the customeraccount after accessing its data store, as described above. It is to beunderstood that “cross-shopping” is not limited to network purchasingrelated activities, but rather includes various other activitiesincluding, but not limited to, any “shotgun” type APIs, some“get-by-partition” type APIs, non-Web site traffic, and other cases suchas institutional buying that relate to customers. A “shotgun” type APIrefers to an API that queries data from all data partitions (in variousregions) based on some secondary keys for which no secondary key mappingtable is available, or that are difficult to index. A “get-by-partition”type API refers to an API that queries data from several data partitions(in various regions) based on non-unique secondary keys which can bemapped to one or more customer IDs.

Referring to FIG. 8, a pictorial diagram depicts an exemplaryenvironment 800 to implement several data store systems, each of whichis dedicated to a certain geographic region in accordance withembodiments of the present invention. For example, one data store systemis dedicated to region “A” and another data store system is dedicated toregion “B.” Different instances of the partitioning service, such aspartitioning service (1) 810 and partitioning service (2) 830, may beassociated with each region. Likewise, different instances of the globaldata service are also deployed to manage global data stores 814, 834 ofeach region.

In one embodiment, the global data stores of regions may be replicatedthrough an entire “cross-shopper-set.” A “cross-shopper-set” refers to aset of regions across which “cross-shopping” activities are allowed. Tofacilitate customer services across the regions, the global data storemay include a global customer mapping table in addition to other mappingtables discussed above. The global customer mapping table may representa customer's ID and its region relationship. Thus, all the customer IDsacross the “cross-shopping-set” may have entries in the global customermapping table. The global customer mapping table is utilized to identifya region for an outside region customer based on a customer ID.

Unlike a global data store, a customer data store 816, 836 is notreplicated across the regions. Thus, a separate bucket-to-partitionmapping table is maintained for each region. As described above, eachdata partition may have a replication of the customer data in asecondary database; however, replication of data partitions does notexist between regions. This customer data separation among the regionsmay create situations for activities related to “cross-shopping.”

In one embodiment, each region may also maintain information aboutoutside region customers in a list of outside region customers. The listof outside region customers includes information about an outside regioncustomer, such as a customer ID and the region in which the customer is“homed.” For example, if any customers who were created in region “A”have been queried recently in region “B,” the customers are outsideregion customers, which may be stored and maintained in the list ofoutside region customers for region “B.” The list of outside regioncustomers may be utilized for an efficient region search for an outsideregion customer who has a history of performing “cross-shopping”activities. Thus, when an access request for customer data is receivedby the partitioning service (1) 810, the partitioning service (1) 810may first attempt to look up the customer ID of the customer data in thelist of outside region customers.

In one embodiment, in order for efficient access, the list of outsideregion customers may be preferably stored in an in-memory cache. If thecustomer ID is found in the list of outside region customers, thepartitioning service (1) 810 will identify the region where the customeris “homed” and forward the request to another partitioning service(e.g., partition service (2) 830) for the region where the customer is“homed.” If the customer ID is not found in the list of outside regioncustomers, the partitioning service (1) 810 assumes that the customer IDis “homed” on the customer data store of region “A.” The partitioningservice (1) 810 then hashes the customer ID to identify a correspondingbucket and looks up a bucket-to-partition mapping table of region “A.”After the partitioning service (1) 810 determines a partition, therequest is forwarded to the partition. If the partition can not findcorresponding customer data, this indicates that the customer ID is foran outside region customer (i.e., does not belong to the current region)or that the customer ID is invalid.

In this case, the partitioning service (1) 810 determines whether thecustomer ID is invalid via a lookup in a global customer mapping tableand, if it is invalid, the partitioning service (1) 810 discards therequest. Otherwise, the partitioning service (1) 810 may create a newentry for this customer ID in the list of out region customers forregion “A” and forward the request to a remote region determined fromthe global customer mapping table. Subsequently, the remote region mayprovide the customer data in accordance with the request.

In an illustrative embodiment, when creating new customers, thepartitioning service may assume that the new customers are homed in theregion where the partitioning service is associated. For example, if acustomer creates his account on region “B,” then the customer data willbe stored in a data store of region “B,” although the customer does notphysically live in region “B.” As discussed above, the partitioningservice is responsible for inserting an entry into the global customermapping table whenever a new customer is created. Existing customerswill be associated with whatever region in which they were created.

Referring to FIG. 9, a flow diagram depicts a cross-shopping routine 900in accordance with embodiments of the present invention.

As with FIG. 8, when a request for “cross-shopping” is received from acustomer service server, a partitioning service in an “originatingregion” forwards the request to the partitioning service in anappropriate “remote region” where the request can be served and obtainsthe result from the partitioning service in the remote region. An“originating region,” as used herein, refers to a region in which arequest for “cross-shopping” originates. A “remote region,” as usedherein, refers to one of regions in the “cross-shopping-set,” which isdifferent from the originating region.

For the purpose of discussion, assume that an access request forcustomer data is received by a partitioning service of an originatingregion and the partitioning service has identified or obtained acustomer ID of the customer. As described above, if the request is abouta secondary key, the customer ID can be obtained from the global dataservice via a secondary-to-partitionable key mapping. Those requestsincluding a secondary key for which a secondary-to-partitionable keymapping is not defined or several customer IDs are determined after thesecondary to partitionable key mapping, will be discussed in a greaterdetail in FIGS. 10 and 11 respectively.

Beginning at block 902, the partitioning service may first attempt tolook up the customer ID in the list of outside region customers. Atdecision block 904, a determination is made as to whether the customerID is found in the list of outside region customers. If the customer IDis found in the list of outside region customers, at block 906 thepartitioning service may forward the request to a partitioning serviceof a remote region based on the list of outside region customers. Thepartitioning service identifies, from the list of outside regioncustomers, the remote region corresponding to the customer ID.Subsequently, the partitioning service obtains customer data from thepartitioning service of the identified remote region. If the customer IDis not found in the list of outside region customers, at block 910 thepartitioning service assumes that the customer ID is “homed” in theoriginating region. The partitioning service then hashes the customer IDto a corresponding bucket ID. As with FIG. 6, the partitioning servicedetermines a data partition by looking up a bucket-to-partition mappingtable, which is predefined for the customer data store of theoriginating region. At block 916, the partitioning service may forwardthe request to the determined data partition. If the customer ID is“homed” in the originating region, the determined data partition is ableto access and provides the customer data back to the partitioningservice. Otherwise, the determined data partition may provide anindication that the requested customer data is not found in the datapartition and thus the customer ID may be “homed” in one of the remoteregions.

At decision block 917, a determination is made as to whether customerdata corresponding to the customer ID is found within the determineddata partition. If the customer data is not found in the determined datapartition, at block 918 the partitioning service may look up thecustomer ID in a global customer mapping table. At decision block 920, adetermination is made whether the customer ID is found from the globalcustomer mapping table. If the customer ID is not found from globalcustomer mapping table or maps to the originating region, thepartitioning service assumes that the request is invalid and, thus,discards the request as illustrated at block 922. If the customer ID isfound from the global customer mapping table and maps to a region otherthan the originating region, the partitioning service may create a newentry for this customer ID in the list of outside region customers, asillustrated at block 924. At block 926, the remote region associatedwith the customer ID may be determined from the global customer mappingtable and obtain data from the partitioning service of the remoteregion. In one embodiment, a cross-WAN call may be made to thepartitioning service of the remote region in order to serve the request.

After obtaining the customer data from the remote region (block 906),the data partition (decision block 917) or discarding the request (block922), the routine completes at block 928.

With a reference to FIG. 10, a flow diagram depicts a shotgun requestroutine 1000 in accordance with embodiments of the present invention. Asdiscussed above, there are some secondary keys which are hard (orimpractical) to be indexed in order to facilitate “shotgun” typerequests across regions. For example, it is impractical to have an indextable for the customer's last name since there can be so many customershaving a common last name. Thus, when “shotgun” type requests arereceived, the request may be forwarded to each region in thecorresponding “cross-shopping-set” and results may be aggregated fromseveral regions.

At block 1002, the partitioning service receives a “shotgun” typerequest. At block 1004, the partitioning service performs theappropriate query on each partition within the local region that thepartitioning service is associated with. At a decision block 1006, adetermination is made as to whether the request has originated from thelocal region. If it is determined that the request is originated in thelocal region, at block 1008 the request may be forwarded to apartitioning service for each remote region in the “cross-shopping-set.”At block 1010, results are aggregated from the remote regions and thepartitions. If it is determined at decision block 1006 that the requesthas not originated from the local region, at block 1018 the results areaggregated from the partitions. At block 1020, all the aggregated datamay be returned and the routine 1000 completes.

In one embodiment, the majority of the “shotgun” type requests may needto obtain all matching customer data across the regions. However, it iscontemplated that, if the request is for a specific piece of data, thespecific piece of data may be searched and obtained instead of beingaggregated. Thus, if it has found the desired data after a datapartition or a remote region is checked, the process may stop that pointrather than proceeding to the next data partition or the next remoteregion.

With a reference to FIG. 11, a flow diagram depicts a get-by-partitionrequest routine 1100 in accordance with embodiments of the presentinvention. As discussed above, some requests are directed to accesscustomer information about multiple customers. Some of such requests arereferred herein as “get-by-partition” type requests which generallyinclude non-unique secondary keys which can be mapped to one or morecustomer IDs in the global data store. For example, a request to accesscustomer information based on a phone number may be a get-by-partitiontype request since several customers can share one phone number. In someinstances, multiple partitions in the local region and/or multipleregions may be queried in order to serve a get-by-partition typerequest.

At block 1102, the partitioning service receives a get-by-partition typerequest which may include one or more secondary keys, each of which hasa secondary key mapping table in the global data store. At block 1104,the partitioning service communicates with a global data service toobtain partitionable keys (e.g. customer IDs) corresponding to thesecondary keys. As mentioned above, a secondary key can be mapped intoseveral customer IDs which belong to different regions. At block 1106,for each customer ID, the partitioning service may identify a regionassociated with the customer ID. As with FIGS. 9 and 10, a regionassociated with the customer ID may be identified via a global customermapping table. If the customer ID belongs to the local region, thepartitioning service may identify data partition corresponding to thecustomer ID in the local region via bucket-to partition mapping. Asillustrated at block 1106, for the obtained customer IDs, a list ofpartitions and/or a list of remote regions may be identified.

At a decision block 1108, a determination is made as to whether any datapartitions in the local region are identified based on the customer IDs.If it is determined that data partitions in the local region areidentified, at block 1110, the partitioning service performs theappropriate query on the identified data partitions within the localregion. If it is determined at a decision block 1108 that no datapartition in the local region is identified based on the customer IDs,or after block 1110, at decision block 1112, a determination is made asto whether the request has originated from the local region. As will beappreciated by one of ordinary skill in the art, if the request has notoriginated from the local region (i.e., the request is forwarded fromone of the other regions), the request is not to be forwarded to theother remote regions.

If it is determined at decision block 1112 that the request hasoriginated from the local region, at decision block 1114, adetermination is made as to whether other remote regions are identified.If other remote regions are identified, the partitioning service mayquery on the identified remote regions by forwarding the request atblock 1116. If the request has not originated from the local region(decision block 1112), or after querying on the identified remoteregion, at block 1118 customer data may be aggregated from the list ofdata partitions and/or the list of the remote regions. The routine 1100returns the aggregated data and completes at block 1120.

Referring to FIGS. 12A and 12B, pictorial diagrams depict an exemplarysystem environment 1200 where a legacy database is converted into apartitioned data store system without requiring new software at theclient services in accordance with embodiments of the present invention.

As will be appreciated by one of ordinary skill in the art, a conversionof the existing underlying database to a new structured database createssignificant problems, let alone that it is costly and time consuming. Inaddition, most database conversions may require software changes in theclient services. However, it is also true that the reconstruction ofsome underlining single databases is inevitable in order to curefrequent blackout or brownout problems. In an advantageous aspect of thepresent invention, any legacy customer database can be reconstructed orconverted to a customer data store in a partitioning platform withoutrequiring any software change in the client services. In order tomitigate some known problems for the database reconstruction, the legacydatabase may be converted into a customer data store system inpartitioning framework in multiple phases. The amount of change may bedetermined in a manner such that the amount of risk associated with thechange can be tolerable in each phase.

Referring to FIG. 12A, a legacy customer database and a customer datastore system coexist as an initial phase in accordance with embodimentsof the present invention. While a customer service server 1250 for thelegacy customer database 1240 is responsible for the client services, anew customer service server 1202 configured to communicate with apartitioning service 1204 may be deployed. A partitioning service 1204and a data partition service 1232 are also launched for accessingcustomer data in the legacy customer database 1240. The legacy customerdatabase 1240 may be considered as a single data partition to which allbuckets map. Both old customer service server 1250 and new customerservice server 1202 may be able to access the legacy customer database.

In the next phase, a global data store 1210 may be added to the customerdata store system and global data will be copied from the legacycustomer database 1240 to the global data store as shown in FIG. 12B. Aglobal data service 1206 may be deployed and configured to communicatewith the partitioning service 1204. After the global data is migratedfrom the legacy customer database 1240 to the global data store 1210,all service requests for accessing global data may be forwarded topartitioning service.

FIG. 12B depicts the next phase where new data partitions 1224 are addedto the exemplary system environment 1200 in accordance with embodimentsof the present invention. Each data partition 1224 has an associateddata partition service 1234 launched. Subsequently, buckets associatedwith the legacy customer database 1240 are redistributed to the datapartitions. The bucket-to-partition mapping is updated to reflect thisredistribution. For each redistributed bucket, customer data in thelegacy customer database 1240 (now it behaves as a data partition) maybe migrated to a data partition associated with the bucket by utilizingthe routine 700. Here, the legacy customer database 1240 may be an olddata partition for a bucket that is in process of migration and thus thebucket within the legacy customer database 1240 may be locked for themigration process. Eventually, no customer data remains to be migratedin the legacy customer database 1240. After the customer data has beenmigrated from the legacy customer database 1240 to the new datapartitions, the legacy customer database 1240 can be used as a datapartition of the customer data store. In such a case, a data partitionservice 1232 may be configured suitably for accessing the data partitionthat used to be the legacy customer database. Several buckets arereassigned back to the new data partition (previously legacy customerdatabase). The bucket-to-partition mapping table is updated to reflectthis change. The customer data corresponding to the reassigned bucketsmay be migrated back to the new data partition.

Although the aforementioned examples and embodiments are discussed inconjunction with customer data and customer IDs, it is to be understoodthat any suitable data, for example catalog information data, can bemaintained in a data store system utilizing a scalable partitioningframework. Further, any partitionable key can be used to determine apartition corresponding to certain data. It is contemplated that abucket may not be necessarily utilized if a partitionable key and itscorresponding partition can be mapped without creating unwanteddependencies in a data store.

While illustrative embodiments have been illustrated and described, itwill be appreciated that various changes can be made therein withoutdeparting from the spirit and scope of the invention.

1. A computer-implemented method executed on a computing device foraccessing customer data, wherein customer data of a plurality ofcustomers is stored in a plurality of data stores that are maintainedfor a plurality of regions, and wherein each data store includes aplurality of partitions, the computer-implemented method comprising:receiving, by a first computer system, a request for accessing customerdata of a customer, wherein the first computer system maintains a firstdata store for an originating region; identifying a partitionable key ofthe customer data from the received request; based on the partitionablekey, determining a remote region for which a second computer systemmaintains a second data store in which the customer data of the customeris stored, wherein the customer data is stored in one of a plurality ofpartitions of the second data store, each partition having a bucketassociated therewith that contains a plurality of partitionable keysrelated to a subset of customers whose data is stored in the partition,and wherein the partition storing the customer data is determined fromthe plurality of partitions of the second data store based on the bucketthat contains the identified partitionable key; upon determining theremote region, forwarding the request to the second computer system toaccess the customer data of the customer from the second data store; andreceiving a result of the request from the second computer system. 2.The computer-implemented method of claim 1, wherein the customer data ofcustomers whose accounts have been originated from the determined remoteregion are stored in the second data store.
 3. The computer-implementedmethod of claim 1, wherein determining a remote region includessearching a cache table which includes an entry for a remote-regioncustomer who has a history of receiving a service via the first computersystem.
 4. The computer-implemented method of claim 3, furthercomprising: determining a remote region from the cache table if anexisting entry corresponding to the partitionable key is found in thecache table.
 5. The computer-implemented method of claim 4, wherein ifthe existing entry corresponding to the partitionable key is not foundin the cache table, the customer data is assumed to be stored in thefirst data store maintained for the originating region and the customerdata is obtained from the first data store.
 6. The computer-implementedmethod of claim 5, further comprising: performing a mapping with thepartitionable key to determine a partition identification; sending anaccess request for information about the customer to a partitioncorresponding to the partition identification, the partition being apart of the first data store; and obtaining a result of the accessrequest from the partition corresponding to the partitionidentification, wherein the mapping is predefined for the first datastore.
 7. The computer-implemented method of claim 6, wherein if theinformation about the customer cannot be obtained from the partitioncorresponding to the partition identification, a remote regioncorresponding to the partitionable key is determined based on a globalmapping table which represents a relationship between a partitionablekey and a region of the plurality of regions.
 8. Thecomputer-implemented method of claim 1, wherein identifying thepartitionable key of the customer includes identifying anon-partitionable key of the customer from the request and determiningthe partitionable key of the customer from a lookup table based on thenon-partitionable key of the customer, wherein the non-partitionable keyis a key of the customer that is different from the partitionable keyand the lookup table represents a non-partitionable key-to-partitionablekey mapping in a corresponding region.
 9. The computer-implementedmethod of claim 8, further comprising: if the non-partitionable key ofthe customer does not have a lookup table, broadcasting the request toeach partition in the first data store; forwarding the request to eachcomputer system that maintains a data store for each remote region; andaggregating a result from each partition and each of the plurality ofthe remote regions.
 10. A computer system comprising a processor, thecomputer system for accessing information about a customer stored in acustomer data store that is maintained for a first region, the computersystem comprising: a customer service component configured to receive aservice request to access information about a customer; a storagecomponent configured to maintain a cache table, each entry of the cachetable including a partitionable key and region information of aremote-region customer who has a history of receiving a service via thecomputer system that maintains the customer data store for the firstregion; a partitioning service component configured to process theservice request to obtain a partitionable key related to the customerand determine a second region for which a second computer systemmaintains a second customer data store in which information about thecustomer is stored, wherein the customer information is stored in one ofa plurality of partitions of the second customer data store, eachpartition having a bucket associated therewith that contains a pluralityof partitionable keys related to a subset of customers whose informationis stored in the partition, and wherein the partition storing thecustomer data is determined from the plurality of partitions of thesecond customer data store based on the bucket that contains thepartitionable key related to the customer; and wherein upon determiningthe second region, the partitioning service component is configured toforward to the second computer system the request for the informationabout the customer and receive a result from the second computer system.11. The computer system of claim 10, further comprising: a globalservice component configured to manage one or more mapping tables,wherein each mapping table relates to a corresponding non-partitionablekey and represents a corresponding non-partitionablekey-to-partitionable key mapping, wherein the non-partitionable key is akey of the customer that is different from the partitionable key. 12.The computer system of claim 10, wherein the partitioning servicecomponent obtains the partitionable key by identifying the partitionablekey from the request.
 13. The computer system of claim 11, wherein thepartitioning service component identifies a non-partitionable key fromthe request and obtains the partitionable key from the global servicecomponent.
 14. The computer system of claim 13, wherein the globalservice component provides the partitionable key by searching a mappingtable corresponding to the identified non-partitionable key.
 15. Thecomputer system of claim 10, wherein the partitioning service componentsearches the cache table to determine the second region where thecustomer information is stored.
 16. The computer system of claim 15,wherein if the partitioning service component cannot determine thesecond region from the cache table, the partitioning service componentperforms a bucket mapping with the obtained partitionable key todetermine a partition where information about of the customer is storedin the customer data store maintained for the first region.
 17. Thecomputer system of claim 16, wherein the partitioning service componentsends to the determined partition an access request for informationabout the customer.
 18. The computer system of claim 17, wherein if thepartitioning service component receives from the determined partitionthe information about the customer, the partitioning service providesthe customer service component with the received information about thecustomer.
 19. The computer system of claim 17, wherein if thepartitioning service component does not receive from the determinedpartition the information about the customer, the partitioning servicecomponent determines the second region where the customer information isstored based on a global mapping table.
 20. The computer system of claim19, wherein the global mapping table represents a relationship between apartitionable key and a region.
 21. The computer system of claim 19,wherein the partitioning service component forwards the request to thesecond computer system of the determined second region and receives aresponse from the second computer system.
 22. The computer system ofclaim 21, wherein if the response from the second computer systemincludes the information about the customer, the partitioning servicecomponent provides the customer service component with the informationabout the customer.
 23. The computer system of claim 20, wherein upondetermining the second region based on the global mapping table, thepartitioning service component creates an entry in the cache table forthe customer.
 24. A computer system for managing customer data inscalable partitioned customer data stores, wherein each customer datastore is maintained for at least one of a plurality of regions, theplurality of regions including an originating region and a plurality ofremote regions, the computer system comprising: one or more data storescomprising a first customer data store of the originating region and aglobal data store including a plurality of mapping tables, wherein thecustomer data store includes partitions, wherein each partition isassociated with one or more buckets and each bucket contains a pluralityof partitionable keys of a set of customers whose data is stored in thepartition; and a first computing device in communication with the one ormore data stores, wherein the first computing device is operative to:receive a request to access customer data of a customer; determinewhether the customer data is stored in a partition of a second customerdata store for a remote region of the plurality of regions; upondetermination, identify the remote region of the plurality of remoteregions through at least one of a global mapping table or a cache table,wherein, for the identified remote region, a second computing devicemaintains the second customer data store including a plurality ofpartitions, wherein each partition has a bucket associated therewiththat contains a plurality of partitionable keys of a set of customerswhose data is stored in the partition, and wherein the partition storingthe customer data of the customer is determined from the plurality ofpartitions of the second customer data store based on the bucket thatcontains the identified partitionable key; forward the request to thesecond computing device; and receive a result from the second computingdevice.
 25. The computer system of claim 24, wherein the global mappingtable represents a customer and a region relationship.
 26. The computersystem of claim 25, wherein the global data store includes the globalmapping table.
 27. The computer system of claim 24, wherein the cachetable includes an entry for a remote region customer who has a historyof receiving a service via the first computing device of the originatingregion.
 28. The computer system of claim 24, wherein if it is determinedthat the customer data is stored in a partition of the first customerdata store, the first computing device identifies a bucket whichcontains a partitionable key of the customer.
 29. The computer system ofclaim 28, wherein the first computing device obtains the customer dataof the customer from a partition associated with the identified bucket.30. The computer system of claim 28, wherein the first computing deviceidentifies from the request the partitionable key of the customer. 31.The computer system of claim 28, wherein if the request includes anon-partitionable key of the customer, the first computing device:selects a non-partitionable key mapping table associated with thenon-partitionable key of the customer from several non-partitionable keymapping tables; identifies the partitionable key of the customer basedon the non-partitionable key from the selected non-partitionable keymapping table; and wherein the non-partitionable key is a key of thecustomer that is different from the partitionable key and the selectednon-partitionable key mapping table represents a non-partitionablekey-to-partitionable key mapping.
 32. The computer system of claim 31,wherein if the first computing device maps the non-partitionable key toseveral partitionable keys through the selected non-partitionable keymapping table, the computing device determines regions corresponding tothe partitionable keys.
 33. The computer system of claim 32, wherein ifat least one of the determined regions is the originating region, thefirst computing device identifies a set of partitions via a bucketmapping based on the partitionable keys, forwards the request to the setof partitions, and aggregates information from the set of partitions.34. The computer system of claim 32, wherein the first computing devicedetermines whether the request has originated from the originatingregion.
 35. The computer system of claim 32, wherein if the request hasoriginated from the originating region, the first computing devicedetermines a set of remote regions from the determined regions, forwardsthe request to the set of remote regions, and aggregates informationfrom the set of remote regions.